package handler

//
//import (
//	"context"
//	"google.golang.org/grpc/codes"
//	"google.golang.org/grpc/status"
//	"kuangstudy-mall/srvs/stocks-srv/global"
//	"kuangstudy-mall/srvs/stocks-srv/model"
//	"kuangstudy-mall/srvs/stocks-srv/proto"
//)
//
//type GoodsStocksServiceHandler struct {
//}
//
//// 设置库存
//func (handler *GoodsStocksServiceHandler) SetGoodsStocks(ctx context.Context, req *proto.GoodsStocksInfo) (*proto.GoodsStocksResponse, error) {
//	goodsStocks := model.GoodsStocks{}
//	// 根据商品id查询是否存在商品信息
//	global.DB.Where(&model.GoodsStocks{GoodsId: req.GoodsId}).First(&goodsStocks)
//	goodsStocks.GoodsId = req.GoodsId
//	goodsStocks.Stocks = req.Num
//	//开始保存库存---如果查询没有就是新增，如果存在就是修改
//	global.DB.Save(&goodsStocks)
//	return &proto.GoodsStocksResponse{Flag: true}, nil
//}
//
//// 根据商品ID查询库存服务
//func (handler *GoodsStocksServiceHandler) GetGoodsStocks(ctx context.Context, req *proto.GoodsStocksRequest) (*proto.GoodsStocksInfo, error) {
//	goodsStocks := model.GoodsStocks{}
//	// 根据商品id查询是否存在商品信息
//	if result := global.DB.Where(&model.GoodsStocks{GoodsId: req.GoodsId}).First(&goodsStocks); result.RowsAffected == 0 {
//		return nil, status.Errorf(codes.NotFound, "找不到商品的库存信息!")
//	}
//
//	return &proto.GoodsStocksInfo{
//		GoodsId: goodsStocks.GoodsId,
//		Num:     goodsStocks.Stocks,
//	}, nil
//}
//
//// 库存扣减服务 .其实就是用户在购物车的模块中点击下单的时候会保存订单，然后扣减库存，所以商品是多个不是一个
//func (handler *GoodsStocksServiceHandler) GoodsStocksSell(ctx context.Context, req *proto.GoodsSellListRequest) (*proto.GoodsStocksResponse, error) {
//	for _, goodsInfo := range req.GoodsList {
//		// 1： 判断购物车中的每个商品ID是否真实存在，如果不存在就直接提示错误信息
//		goodsStocks := model.GoodsStocks{}
//		if result := global.DB.Where(&model.GoodsStocks{GoodsId: goodsInfo.GoodsId}).First(&goodsStocks); result.RowsAffected == 0 {
//			return nil, status.Errorf(codes.NotFound, "找不到商品的库存信息!")
//		}
//		// 2: 如果商品存在，就开始判断商品的库存是否充足
//		// goodsInfo.Num: 用户购物车购买的商品数量
//		// goodsStocks.Stocks : 商品实际的库存真实数量
//		if goodsInfo.Num > goodsStocks.Stocks {
//			return nil, status.Errorf(codes.ResourceExhausted, "商品库存不足!")
//		}
//
//		// 3: 开始扣减库存
//		goodsStocks.Stocks = goodsStocks.Stocks - goodsInfo.Num
//		// 4：开始更新数据量商品的库存信息
//		global.DB.Save(&goodsStocks)
//	}
//
//	return &proto.GoodsStocksResponse{Flag: true}, nil
//}
//
//// 库存的归还服务，其实就是指用户在下单以后，如果没有支付的订单，或者超时的订单，或者退款的订单都会进行库存回归
//func (handler *GoodsStocksServiceHandler) GoodsStocksRebackl(ctx context.Context, req *proto.GoodsSellListRequest) (*proto.GoodsStocksResponse, error) {
//	for _, goodsInfo := range req.GoodsList {
//		// 1： 判断购物车中的每个商品ID是否真实存在，如果不存在就直接提示错误信息
//		goodsStocks := model.GoodsStocks{}
//		if result := global.DB.Where(&model.GoodsStocks{GoodsId: goodsInfo.GoodsId}).First(&goodsStocks); result.RowsAffected == 0 {
//			return nil, status.Errorf(codes.NotFound, "找不到商品的库存信息!")
//		}
//		// 2: 如果商品存在，就开始判断商品的库存是否充足
//		// goodsInfo.Num: 用户购物车购买的商品数量
//		// goodsStocks.Stocks : 商品实际的库存真实数量
//		if goodsInfo.Num > goodsStocks.Stocks {
//			return nil, status.Errorf(codes.ResourceExhausted, "商品库存不足!")
//		}
//
//		// 3: 开始扣减库存
//		goodsStocks.Stocks = goodsStocks.Stocks + goodsInfo.Num
//		// 4：开始更新数据量商品的库存信息
//		global.DB.Save(&goodsStocks)
//	}
//
//	return &proto.GoodsStocksResponse{Flag: true}, nil
//}
